package com.eastedu.repository.file;

import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import jakarta.persistence.Id;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Date;

/**
 * 文件原始文件，统一存储为对象文件（支持多种云服务，通过provider定位不同的提供商），如果需要支持预览，则通过转码服务，在预览表中写入一条转码数据
 * 这里移除了原来的playId（playId），放到了预览表， 这样可支持对象文件和预览文件的解耦，可支持多种存储方式；预览文件也可以根据成本放到不同的云服务上
 *
 * @author ZhenZhong
 */
@EqualsAndHashCode(callSuper = false)
@Data
@TableName(value = "file_original")
@JsonIgnoreProperties(ignoreUnknown = true)
public class FileOriginalPO {

    /**
     * 文件ID
     */
    @Id
    private String id;

    /**
     * 存储桶信息
     */
    private String bucketId;

    /**
     * 文件大小
     */
    private Long size;
    /**
     * 文件md5
     */
    private String md5;

    /**
     * 以后将不会使用，采用下面的方式。这里只是为了兼容已有的文件地址
     */
    private String server;
    /**
     * 文件云路径(path部分统一处理，server部分根据provider获取，进行拼接)
     */
    private String path;
    /**
     * 文件扩展名
     */
    private String extension;
    /**
     * 文件名
     */
    private String fileName;
    /**
     * 文件状态
     * 0 -- 待上传
     * 1 -- 上传完成
     */
    private FileState state;
    /**
     * 云服务提供商
     */
    private String provider;

    private String client;

    private Date updateTime;
    private Date createTime;
}
